package com.jic.market.request;

import java.math.BigDecimal;
import java.util.Date;
import java.io.Serializable;
import java.util.List;

import com.jic.common.base.vo.AdminOperate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * description: PromotionRequest
 * date: 2020-01-10 11:58
 * author: wangys
 * version: 1.0
 */
@Data
@ApiModel("promotion请求参数")
public class PromotionRequest extends BaseRequest implements Serializable {
    private static final long serialVersionUID = 1L;

    private String creatorNameForSearch;
    /*
     *
     */
    @ApiModelProperty(notes = "活动id")
    private Long id;


    /*
     * 促销活动名称
     */
    @ApiModelProperty(notes = "促销活动名称")
    private String promName;


    /*
     * 活动开始时间
     */
    @ApiModelProperty(notes = "活动开始时间")
    private Date startTime;


    /*
     * 活动结束时间
     */
    @ApiModelProperty(notes = "活动结束时间")
    private Date endTime;


    /*
     * 类型:1单一促销,2满量促销,3满额促销,4秒杀,5赠送类促销,6组合促销7.单品X件优惠,8换购,9预售,10拼团占用,11优惠券占用,12红包占用,13抽奖占用,14 支付立减
     */
    @ApiModelProperty(notes = "促销活动类型")
    private Integer promType;


    /*
     * 促销类型:  1特价促销，2折扣促销，3直降促销，4满量减，5满量折，6满额减，7满额折，8满金额赠，9满量赠,10秒杀,11买赠,12 第X件Y折,13第X 件Y元,14满X件Y折 ,15满额换购，16满量换购，17尾款计算，18一口价，19满额减运费,  20买商品换购,  21满金额换购 22 x元y件 23 x件付y件,27满量减运费, 29 we2000(支付立减), 30 微信支付(支付立减), 31 微众卡(支付立减), 32 企业购(支付立减)
     */
    @ApiModelProperty(notes = "促销前台类型")
    private Integer frontPromType;

    @ApiModelProperty(notes = "促销前台类型 支付方式 29 we2000(支付立减), 30 微信支付(支付立减), 31 微众卡(支付立减), 32 企业购(支付立减)")
    private String payFrontPromType;


    /*
     * 选品类型:1部分参与,2全场参与
     */
    @ApiModelProperty(notes = "选品类型:1部分参与,2全场参与")
    private Integer selectionRange;


    /*
     * 是否叠加应用，次数，-1否，n次数
     */
    @ApiModelProperty(notes = "是否叠加应用")
    private Integer overlayAppNum;


    /*
     * 赠品类型 1赠商品，2赠优惠券
     */
    @ApiModelProperty(notes = "赠品类型 1赠商品，2赠优惠券")
    private Integer giftType;


    /*
     * 描述
     */
    @ApiModelProperty(notes = "描述")
    private String description;


    /*
     * 是否支持折上折 0否，1是
     */
    @ApiModelProperty(notes = " 是否支持折上折 0否，1是")
    private Integer foldingFlag;


    /*
     * 是否排斥优惠券 0否，1是
     */
    @ApiModelProperty(notes = " 是否排斥优惠券 0否，1是")
    private Integer rejectCouponsFlag;


    /*
     * 是否包邮 0否，1是
     */
    @ApiModelProperty(notes = "是否包邮 0否，1是")
    private Integer parcelsFlag;


    /*
     * 超限规则，1按原价购买，2不可购买
     */
    @ApiModelProperty(notes = "超限规则，1按原价购买，2不可购买")
    private Integer overLimitRule;


    /*
     * 活动渠道code
     */
    @ApiModelProperty(notes = "活动渠道code")
    private String channelCodes;

    @ApiModelProperty(notes = "活动渠道id")
    private String channelId;

    /**
     * 创建商家id
     */
    @ApiModelProperty(notes = "创建商家id")
    private Long createMerchantId;

    /**
     * 创建商家名称
     */
    @ApiModelProperty(notes = "创建商家名称")
    private String createMerchantName;

    /**
     * 规则说明
     */
    @ApiModelProperty(notes = "规则说明")
    private String ruleInfo;

    /**
     * 规则说明第二语言
     */
    @ApiModelProperty(notes = "规则说明第二语言")
    private String ruleInfoLan2;

    /**
     * 秒杀活动标记 0:非秒杀活动 1:秒杀活动
     */
    @ApiModelProperty(notes = "秒杀活动标记 0:非秒杀活动 1:秒杀活动")
    private Integer seckillFlag;

    /*
     * 活动平台
     */
    @ApiModelProperty(notes = "活动平台")
    private List<String> proPlatform;


    /*
     * 用户类型
     */
    @ApiModelProperty(notes = "用户类型")
    private List<String> proUserType;

    /**
     *审核理由
     * */
    @ApiModelProperty(notes = "审核理由")
    private String auditRemark;

    /*
     * 会员类型
     */
    @ApiModelProperty(notes = "会员类型")
    private List<String> proMemberType;


    /*
     * 会员等级
     */
    @ApiModelProperty(notes = "会员等级")
    private List<String> proMemberLevel;

    /**
     * 活动标签id
     */
    @ApiModelProperty(notes = "活动标签id")
    private Long labelId;

    /**
     * 店铺地区code码
     */
    @ApiModelProperty(notes = "店铺地区code码集")
    private List<String> storeArea;

    /**
     * 用户地区code码
     */
    @ApiModelProperty(notes = "用户地区code码集")
    private List<String> userArea;

    /**
     * 是否成本分摊0否 1是
     */
    @ApiModelProperty(notes = "是否成本分摊0否 1是")
    private String costAllocationFlag;

    /**
     * 母平台分摊比例
     */
    @ApiModelProperty(notes = "母平台分摊比例")
    private Integer parentAllocationScale;

    /**
     * 子平台分摊比例
     */
    @ApiModelProperty(notes = "子平台分摊比例")
    private Integer childAllocationScale;

    /**
     * 商家平台分摊比例
     */
    @ApiModelProperty(notes = "商家平台分摊比例")
    private Integer merchantAllocationScale;

    /**
     * 店铺平台分摊比例
     */
    @ApiModelProperty(notes = "店铺平台分摊比例")
    private Integer storeAllocationScale;

    /**
     * 平台id
     */
    @ApiModelProperty(notes = "平台id")
    private Long deptId;

    /**
     * 活动商家
     */
    @ApiModelProperty(notes = "商家id")
    private Long merchantId;

    /**
     * 店铺id
     */
    @ApiModelProperty(notes = "店铺id")
    private Long storeId;

    /**
     * 备注
     */
    @ApiModelProperty(notes = "备注")
    private String remark;


    /**
     * 活动状态 0 未审核  1 待审核  2未开始 3 审核不通过  4 进行中  5 已过期  6 已关闭
     */
    @ApiModelProperty(notes = "活动状态")
    private Integer status;


    /**
     * 是否删除 0否，1是
     */
    @ApiModelProperty(notes = "是否删除")
    private Integer deleteFlag;

    //对应前端是promotionMethod
    private Integer contentType;

    //店铺渠道
    private String channelCode;

    /**
     * 是否叠加使用
     */
    @ApiModelProperty(notes = "是否超限")
    private Integer overlayAppFlag;

    private Integer conditionValue;

    private Integer contentValue;

    private Long ruleId;

    private List<PromotionRuleRequest.PromotionRuleListRequest> promotionRules;

    /**
     * 单品X件优惠活动描述
     */
    private String ruleDesc;
    /**
     * 单品X件优惠规则
     */
    List<PromotionSingleProductRuleRequest> promotionSingleProductRuleList;

    /**
     * 预售活动相关参数
     */
    //预售价模式，1一口价
    private Integer frontPromMode;
    //定金支付时间开始
    private Date frontMoneyPayTimeStart;
    //定金支付时间结束
    private Date frontMoneyPayTimeEnd;
    //尾款支付时间开始
    private Date tailMoneyPayTimeStart;
    //尾款支付时间结束
    private Date tailMoneyPayTimeEnd;
    //开始发货时间结束
    private Date sendGoodsTime;
    //定金是否可退:默认0否;1是
    private Boolean isRefundFrontMoney;

    //主赠相同
    private Integer mainGiftSameFlag;

    private String templateName;

    //运费类型，1满x元，免运费，2满x元减y元运费
    private Integer freightType;


    private BigDecimal freightValue;

    private BigDecimal freightReducedValue;

    //赠送节点
    private Integer giveCouponNode;


    private AdminOperate adminOperate;

    private String promotionCode;

    // 会员类型，普通会员，vip会员
    private String memTypes;

    private List<PromotionMemberGradeRequest> promotionMemberGradeList;

    @ApiModelProperty(notes = "搜索词")
    private String searchKeyword;
    @ApiModelProperty(notes = "活动费用预算")
    private Long budget;
    @ApiModelProperty(notes = "预警比例")
    private String warningNum;
}
